// 扩展原生console.log对象
import * as moment from 'moment';

// 生产站隐藏输出
/*
if (
  process.env.NODE_ENV === 'production' &&
  !localStorage.getItem('neurogin-debug')
) {
  console.log = () => {};
}
*/

// 有了zlog,原生的log可以置空，强制要求使用自定义，但是第三方和框架内置输出需要使用，所以保留
console.logZ = (function(oriLogFunc) {
  return function() {
    oriLogFunc(...arguments);
  };
})(console.log);

// 可以在自定义打印日志中进行拦截，比如离线保存，统一过滤
console.logC = (function(oriLogFunc) {
  return function() {
    oriLogFunc(...arguments);
  };
})(console.logZ);

// 格式化日志
console.logF = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc('[' + now + ' INFO]', ...arguments);
  };
})(console.logC);

console.log = console.logF;

// 红色格式化日志
console.logR = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc(
      '%c%s',
      'color: red; font-size: 12px;',
      '[' + now + ' INFO]',
      ...arguments
    );
  };
})(console.logC);

// 绿色格式化日志
console.logG = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc(
      '%c%s',
      'color: green; font-size: 12px;',
      '[' + now + ' INFO]',
      ...arguments
    );
  };
})(console.logC);

// 蓝色格式化日志
console.logB = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc(
      '%c%s',
      'color: blue; font-size: 12px;',
      '[' + now + ' INFO]',
      ...arguments
    );
  };
})(console.logC);

console.logH = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc(
      '%c%s',
      'color: Maroon; font-size: 12px;',
      '[' + now + ' HTTP]',
      ...arguments
    );
  };
})(console.logC);

console.logW = (function(oriLogFunc) {
  const now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
  return function() {
    oriLogFunc(
      '%c%s',
      'color: Orange ; font-size: 12px;',
      '[' + now + ' -WS-]',
      ...arguments
    );
  };
})(console.logC);
